home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / Navigation.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  21.7 KB  |  584 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        Navigation.h
  3.  
  4.      Contains:    Navigation Services Interfaces
  5.  
  6.      Version:    Technology:    Navigation 2.0
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1996-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __NAVIGATION__
  18. #define __NAVIGATION__
  19.  
  20. #ifndef __MACTYPES__
  21.     #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __APPLEEVENTS__
  25.     #include <AppleEvents.h>
  26. #endif
  27.  
  28. #ifndef __TRANSLATION__
  29.     #include <Translation.h>
  30. #endif
  31.  
  32. #ifndef __MACWINDOWS__
  33.     #include <MacWindows.h>
  34. #endif
  35.  
  36. #ifndef __CODEFRAGMENTS__
  37.     #include <CodeFragments.h>
  38. #endif
  39.  
  40. #ifndef __MACERRORS__
  41.     #include <MacErrors.h>
  42. #endif
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. #if PRAGMA_ONCE
  50. #pragma once
  51. #endif
  52.  
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56.  
  57. #if PRAGMA_IMPORT
  58. #pragma import on
  59. #endif
  60.  
  61. #if PRAGMA_STRUCT_ALIGN
  62.     #pragma options align=mac68k
  63. #elif PRAGMA_STRUCT_PACKPUSH
  64.     #pragma pack(push, 2)
  65. #elif PRAGMA_STRUCT_PACK
  66.     #pragma pack(2)
  67. #endif
  68.  
  69. enum {
  70.     kNavDialogOptionsVersion    = 0,
  71.     kNavReplyRecordVersion        = 0,
  72.     kNavCBRecVersion            = 0,
  73.     kNavFileOrFolderVersion        = 1,
  74.     kNavMenuItemSpecVersion        = 0
  75. };
  76.  
  77. typedef UInt16                             NavDataVersion;
  78.  
  79. typedef UInt32 NavAskSaveChangesAction;
  80. enum {
  81.                                                                 /* input action codes for NavAskSaveChanges() */
  82.     kNavSaveChangesClosingDocument = 1,
  83.     kNavSaveChangesQuittingApplication = 2,
  84.     kNavSaveChangesOther        = 0
  85. };
  86.  
  87.  
  88.  
  89. typedef UInt32 NavAskSaveChangesResult;
  90. enum {
  91.                                                                 /* result codes for NavAskSaveChanges() */
  92.     kNavAskSaveChangesSave        = 1,
  93.     kNavAskSaveChangesCancel    = 2,
  94.     kNavAskSaveChangesDontSave    = 3
  95. };
  96.  
  97.  
  98.  
  99. typedef UInt32 NavAskDiscardChangesResult;
  100. enum {
  101.                                                                 /* result codes for NavAskDiscardChanges() */
  102.     kNavAskDiscardChanges        = 1,
  103.     kNavAskDiscardChangesCancel    = 2
  104. };
  105.  
  106.  
  107.  
  108. typedef SInt16 NavFilterModes;
  109. enum {
  110.                                                                 /* which elements are being filtered for objects: */
  111.     kNavFilteringBrowserList    = 0,
  112.     kNavFilteringFavorites        = 1,
  113.     kNavFilteringRecents        = 2,
  114.     kNavFilteringShortCutVolumes = 3,
  115.     kNavFilteringLocationPopup    = 4                                /* for v1.1 or greater */
  116. };
  117.  
  118.  
  119.  
  120. struct NavFileOrFolderInfo {
  121.     UInt16                             version;
  122.     Boolean                         isFolder;
  123.     Boolean                         visible;
  124.     UInt32                             creationDate;
  125.     UInt32                             modificationDate;
  126.     union {
  127.         struct {
  128.             Boolean                         locked;                /* file is locked */
  129.             Boolean                         resourceOpen;        /* resource fork is opened */
  130.             Boolean                         dataOpen;            /* data fork is opened */
  131.             Boolean                         reserved1;
  132.             UInt32                             dataSize;            /* size of the data fork */
  133.             UInt32                             resourceSize;        /* size of the resource fork */
  134.             FInfo                             finderInfo;            /* more file info: */
  135.             FXInfo                             finderXInfo;
  136.         }                                 fileInfo;
  137.         struct {
  138.             Boolean                         shareable;
  139.             Boolean                         sharePoint;
  140.             Boolean                         mounted;
  141.             Boolean                         readable;
  142.             Boolean                         writeable;
  143.             Boolean                         reserved2;
  144.             UInt32                             numberOfFiles;
  145.             DInfo                             finderDInfo;
  146.             DXInfo                             finderDXInfo;
  147.             OSType                             folderType;
  148.             OSType                             folderCreator;
  149.             char                             reserved3[206];
  150.         }                                 folderInfo;
  151.  
  152.     }                                 fileAndFolder;
  153. };
  154. typedef struct NavFileOrFolderInfo        NavFileOrFolderInfo;
  155.  
  156. union NavEventDataInfo {
  157.     EventRecord *                    event;                        /* for event processing */
  158.     void *                            param;                        /* points to event specific data */
  159. };
  160. typedef union NavEventDataInfo            NavEventDataInfo;
  161.  
  162. struct NavEventData {
  163.     NavEventDataInfo                 eventDataParms;                /* the event data */
  164.     SInt16                             itemHit;                    /* the dialog item number, for v1.1 or greater */
  165. };
  166. typedef struct NavEventData                NavEventData;
  167.  
  168. typedef UInt32                             NavContext;
  169.  
  170. struct NavCBRec {
  171.     UInt16                             version;
  172.     NavContext                         context;                    /* used by customization code to call Navigation Services */
  173.     WindowPtr                         window;                        /* the dialog */
  174.     Rect                             customRect;                    /* local coordinate rectangle of customization area */
  175.     Rect                             previewRect;                /* local coordinate rectangle of the preview area */
  176.     NavEventData                     eventData;
  177.     char                             reserved[222];
  178. };
  179. typedef struct NavCBRec                    NavCBRec;
  180. typedef NavCBRec *                        NavCBRecPtr;
  181. enum {
  182.     kNavCBEvent                    = 0,                            /* an event has occurred (update, idle events, etc.) */
  183.     kNavCBCustomize                = 1,                            /* protocol for negotiating customization space */
  184.     kNavCBStart                    = 2,                            /* the navigation dialog is starting up */
  185.     kNavCBTerminate                = 3,                            /* the navigation dialog is closing down */
  186.     kNavCBAdjustRect            = 4,                            /* the navigation dialog is being resized */
  187.     kNavCBNewLocation            = 5,                            /* user has chosen a new location in the browser */
  188.     kNavCBShowDesktop            = 6,                            /* user has navigated to the desktop */
  189.     kNavCBSelectEntry            = 7,                            /* user has made a selection in the browser */
  190.     kNavCBPopupMenuSelect        = 8,                            /* signifies that a popup menu selection was made */
  191.     kNavCBAccept                = 9,                            /* user has accepted the navigation dialog */
  192.     kNavCBCancel                = 10,                            /* user has cancelled the navigation dialog */
  193.     kNavCBAdjustPreview            = 11,                            /* preview button was clicked or the preview was resized */
  194.     kNavCBOpenSelection            = (long)0x80000000                /* user has opened or chosen an object, v2.0 or greater */
  195. };
  196.  
  197.  
  198. typedef SInt32                             NavEventCallbackMessage;
  199. typedef void *                            NavCallBackUserData;
  200. /* for events and customization: */
  201. typedef CALLBACK_API( void , NavEventProcPtr )(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, void *callBackUD);
  202. /* for preview support: */
  203. typedef CALLBACK_API( Boolean , NavPreviewProcPtr )(NavCBRecPtr callBackParms, void *callBackUD);
  204. /* filtering callback information: */
  205. typedef CALLBACK_API( Boolean , NavObjectFilterProcPtr )(AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode);
  206. typedef STACK_UPP_TYPE(NavEventProcPtr)                         NavEventUPP;
  207. typedef STACK_UPP_TYPE(NavPreviewProcPtr)                         NavPreviewUPP;
  208. typedef STACK_UPP_TYPE(NavObjectFilterProcPtr)                     NavObjectFilterUPP;
  209. #if OPAQUE_UPP_TYPES
  210.     EXTERN_API(NavEventUPP)
  211.     NewNavEventUPP                   (NavEventProcPtr            userRoutine);
  212.  
  213.     EXTERN_API(NavPreviewUPP)
  214.     NewNavPreviewUPP               (NavPreviewProcPtr        userRoutine);
  215.  
  216.     EXTERN_API(NavObjectFilterUPP)
  217.     NewNavObjectFilterUPP           (NavObjectFilterProcPtr    userRoutine);
  218.  
  219.     EXTERN_API(void)
  220.     DisposeNavEventUPP               (NavEventUPP                userUPP);
  221.  
  222.     EXTERN_API(void)
  223.     DisposeNavPreviewUPP           (NavPreviewUPP            userUPP);
  224.  
  225.     EXTERN_API(void)
  226.     DisposeNavObjectFilterUPP       (NavObjectFilterUPP        userUPP);
  227.  
  228.     EXTERN_API(void)
  229.     InvokeNavEventUPP               (NavEventCallbackMessage    callBackSelector,
  230.                                     NavCBRecPtr                callBackParms,
  231.                                     void *                    callBackUD,
  232.                                     NavEventUPP                userUPP);
  233.  
  234.     EXTERN_API(Boolean)
  235.     InvokeNavPreviewUPP               (NavCBRecPtr                callBackParms,
  236.                                     void *                    callBackUD,
  237.                                     NavPreviewUPP            userUPP);
  238.  
  239.     EXTERN_API(Boolean)
  240.     InvokeNavObjectFilterUPP       (AEDesc *                theItem,
  241.                                     void *                    info,
  242.                                     void *                    callBackUD,
  243.                                     NavFilterModes            filterMode,
  244.                                     NavObjectFilterUPP        userUPP);
  245.  
  246. #else
  247.     enum { uppNavEventProcInfo = 0x00000FC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  248.     enum { uppNavPreviewProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  249.     enum { uppNavObjectFilterProcInfo = 0x00002FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  250.     #define NewNavEventUPP(userRoutine)                             (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture())
  251.     #define NewNavPreviewUPP(userRoutine)                             (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture())
  252.     #define NewNavObjectFilterUPP(userRoutine)                         (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture())
  253.     #define DisposeNavEventUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  254.     #define DisposeNavPreviewUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  255.     #define DisposeNavObjectFilterUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  256.     #define InvokeNavEventUPP(callBackSelector, callBackParms, callBackUD, userUPP)  CALL_THREE_PARAMETER_UPP((userUPP), uppNavEventProcInfo, (callBackSelector), (callBackParms), (callBackUD))
  257.     #define InvokeNavPreviewUPP(callBackParms, callBackUD, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppNavPreviewProcInfo, (callBackParms), (callBackUD))
  258.     #define InvokeNavObjectFilterUPP(theItem, info, callBackUD, filterMode, userUPP)  (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppNavObjectFilterProcInfo, (theItem), (info), (callBackUD), (filterMode))
  259. #endif
  260. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  261. #define NewNavEventProc(userRoutine)                             NewNavEventUPP(userRoutine)
  262. #define NewNavPreviewProc(userRoutine)                             NewNavPreviewUPP(userRoutine)
  263. #define NewNavObjectFilterProc(userRoutine)                     NewNavObjectFilterUPP(userRoutine)
  264. #define CallNavEventProc(userRoutine, callBackSelector, callBackParms, callBackUD) InvokeNavEventUPP(callBackSelector, callBackParms, callBackUD, userRoutine)
  265. #define CallNavPreviewProc(userRoutine, callBackParms, callBackUD) InvokeNavPreviewUPP(callBackParms, callBackUD, userRoutine)
  266. #define CallNavObjectFilterProc(userRoutine, theItem, info, callBackUD, filterMode) InvokeNavObjectFilterUPP(theItem, info, callBackUD, filterMode, userRoutine)
  267.  
  268. typedef SInt32 NavCustomControlMessage;
  269. enum {
  270.     kNavCtlShowDesktop            = 0,                            /*    show desktop,                 parms = nil */
  271.     kNavCtlSortBy                = 1,                            /*    sort key field,             parms->NavSortKeyField */
  272.     kNavCtlSortOrder            = 2,                            /*    sort order,                    parms->NavSortOrder */
  273.     kNavCtlScrollHome            = 3,                            /*    scroll list home,            parms = nil */
  274.     kNavCtlScrollEnd            = 4,                            /*    scroll list end,            parms = nil */
  275.     kNavCtlPageUp                = 5,                            /*    page list up,                parms = nil */
  276.     kNavCtlPageDown                = 6,                            /*    page list down,                parms = nil */
  277.     kNavCtlGetLocation            = 7,                            /*    get current location,        parms<-AEDesc */
  278.     kNavCtlSetLocation            = 8,                            /*    set current location,        parms->AEDesc */
  279.     kNavCtlGetSelection            = 9,                            /*    get current selection,        parms<-AEDescList */
  280.     kNavCtlSetSelection            = 10,                            /*    set current selection,        parms->AEDescList */
  281.     kNavCtlShowSelection        = 11,                            /*    make selection visible,        parms = nil */
  282.     kNavCtlOpenSelection        = 12,                            /*    open view of selection,        parms = nil */
  283.     kNavCtlEjectVolume            = 13,                            /*    eject volume,                parms->vRefNum */
  284.     kNavCtlNewFolder            = 14,                            /*    create a new folder,        parms->StringPtr */
  285.     kNavCtlCancel                = 15,                            /*    cancel dialog,                parms = nil */
  286.     kNavCtlAccept                = 16,                            /*    accept dialog default,        parms = nil */
  287.     kNavCtlIsPreviewShowing        = 17,                            /*    query preview status,        parms<-Boolean */
  288.     kNavCtlAddControl            = 18,                            /*  add one control to dialog,    parms->ControlHandle */
  289.     kNavCtlAddControlList        = 19,                            /*    add control list to dialog,    parms->Handle (DITL rsrc) */
  290.     kNavCtlGetFirstControlID    = 20,                            /*    get 1st control ID,            parms<-UInt16 */
  291.     kNavCtlSelectCustomType        = 21,                            /*    select a custom menu item    parms->NavMenuItemSpec */
  292.     kNavCtlSelectAllType        = 22,                            /*  select an "All" menu item    parms->SInt16 */
  293.     kNavCtlGetEditFileName        = 23,                            /*    get save dlog's file name    parms<-StringPtr */
  294.     kNavCtlSetEditFileName        = 24,                            /*    set save dlog's file name    parms->StringPtr */
  295.     kNavCtlSelectEditFileName    = 25,                            /*    select save dlog file name    parms->ControlEditTextSelectionRec, v1.1 or greater */
  296.     kNavCtlBrowserSelectAll        = 26,                            /*  re-scan the browser list    parms = nil, v2.0 or greater */
  297.     kNavCtlGotoParent            = 27,                            /*  navigate to parent            parms = nil, v2.0 or greater */
  298.     kNavCtlSetActionState        = 28,                            /*  restrict navigation            parms->NavActionState (flags), v2.0 or greater */
  299.     kNavCtlBrowserRedraw        = 29,                            /*  rescan browser list            parms = nil, v2.0 or greater */
  300.     kNavCtlTerminate            = 30                            /*  terminate/dismiss dialog    parms = nil, v2.0 or greater */
  301. };
  302.  
  303.  
  304. typedef UInt32 NavActionState;
  305. enum {
  306.     kNavNormalState                = 0x00000000,                    /* normal/default state */
  307.     kNavDontOpenState            = 0x00000001,                    /* disallow opening files/folders */
  308.     kNavDontSaveState            = 0x00000002,                    /* disallow saving files */
  309.     kNavDontChooseState            = 0x00000004,                    /* disallow choosing objects */
  310.     kNavDontNewFolderState        = 0x00000010                    /* disallow creating new folders */
  311. };
  312.  
  313.  
  314. typedef UInt16 NavPopupMenuItem;
  315. enum {
  316.     kNavAllKnownFiles            = 0,
  317.     kNavAllReadableFiles        = 1,
  318.     kNavAllFiles                = 2
  319. };
  320.  
  321.  
  322. typedef UInt16 NavSortKeyField;
  323. enum {
  324.     kNavSortNameField            = 0,
  325.     kNavSortDateField            = 1
  326. };
  327.  
  328.  
  329.  
  330. typedef UInt16 NavSortOrder;
  331. enum {
  332.     kNavSortAscending            = 0,
  333.     kNavSortDescending            = 1
  334. };
  335.  
  336.  
  337.  
  338. typedef UInt32 NavDialogOptionFlags;
  339. enum {
  340.     kNavDefaultNavDlogOptions    = 0x000000E4,                    /* use defaults for all the options */
  341.     kNavNoTypePopup                = 0x00000001,                    /* don't show file type/extension popup on Open/Save */
  342.     kNavDontAutoTranslate        = 0x00000002,                    /* don't automatically translate on Open */
  343.     kNavDontAddTranslateItems    = 0x00000004,                    /* don't add translation choices on Open/Save */
  344.     kNavAllFilesInPopup            = 0x00000010,                    /* "All Files" menu item in the type popup on Open */
  345.     kNavAllowStationery            = 0x00000020,                    /* allow saving of stationery files */
  346.     kNavAllowPreviews            = 0x00000040,                    /* allow preview to show */
  347.     kNavAllowMultipleFiles        = 0x00000080,                    /* allow multiple items to be selected */
  348.     kNavAllowInvisibleFiles        = 0x00000100,                    /* allow invisible items to be shown */
  349.     kNavDontResolveAliases        = 0x00000200,                    /* don't resolve aliases */
  350.     kNavSelectDefaultLocation    = 0x00000400,                    /* make the default location the browser selection */
  351.     kNavSelectAllReadableItem    = 0x00000800,                    /* make the dialog select "All Readable Documents" on open */
  352.     kNavSupportPackages            = 0x00001000,                    /* recognize file system packages, v2.0 or greater */
  353.     kNavAllowOpenPackages        = 0x00002000,                    /* allow opening of packages, v2.0 or greater */
  354.     kNavDontAddRecents            = 0x00004000,                    /* don't add chosen objects to the recents list, v2.0 or greater */
  355.     kNavDontUseCustomFrame        = 0x00008000                    /* don't add the bevelled custom frame, v2.0 or greater */
  356. };
  357.  
  358.  
  359.  
  360. typedef UInt32 NavTranslationOptions;
  361. enum {
  362.     kNavTranslateInPlace        = 0,                            /*    translate in place, replacing translation source file (default for Save) */
  363.     kNavTranslateCopy            = 1                                /*    translate to a copy of the source file (default for Open) */
  364. };
  365.  
  366.  
  367.  
  368. struct NavMenuItemSpec {
  369.     UInt16                             version;
  370.     OSType                             menuCreator;
  371.     OSType                             menuType;
  372.     Str255                             menuItemName;
  373.     char                             reserved[245];
  374. };
  375. typedef struct NavMenuItemSpec            NavMenuItemSpec;
  376. typedef NavMenuItemSpec *                NavMenuItemSpecArrayPtr;
  377. typedef NavMenuItemSpecArrayPtr *        NavMenuItemSpecArrayHandle;
  378. typedef NavMenuItemSpecArrayPtr         NavMenuItemSpecPtr;
  379. typedef NavMenuItemSpecArrayHandle         NavMenuItemSpecHandle;
  380. enum {
  381.     kNavGenericSignature        = FOUR_CHAR_CODE('****')
  382. };
  383.  
  384.  
  385. struct NavTypeList {
  386.     OSType                             componentSignature;
  387.     short                             reserved;
  388.     short                             osTypeCount;
  389.     OSType                             osType[1];
  390. };
  391. typedef struct NavTypeList                NavTypeList;
  392. typedef NavTypeList *                    NavTypeListPtr;
  393. typedef NavTypeListPtr *                NavTypeListHandle;
  394.  
  395. struct NavDialogOptions {
  396.     UInt16                             version;
  397.     NavDialogOptionFlags             dialogOptionFlags;            /* option flags for affecting the dialog's behavior */
  398.     Point                             location;                    /* top-left location of the dialog, or {-1,-1} for default position */
  399.     Str255                             clientName;
  400.     Str255                             windowTitle;
  401.     Str255                             actionButtonLabel;            /* label of the default button (or null string for default) */
  402.     Str255                             cancelButtonLabel;            /* label of the cancel button (or null string for default) */
  403.     Str255                             savedFileName;                /* default name for text box in NavPutFile (or null string for default) */
  404.     Str255                             message;                    /* custom message prompt (or null string for default) */
  405.     UInt32                             preferenceKey;                /* a key for to managing preferences for using multiple utility dialogs */
  406.     NavMenuItemSpecArrayHandle         popupExtension;                /* extended popup menu items, an array of NavMenuItemSpecs */
  407.     char                             reserved[494];
  408. };
  409. typedef struct NavDialogOptions            NavDialogOptions;
  410. /* data returned by the utility dialogs: */
  411.  
  412. struct NavReplyRecord {
  413.     UInt16                             version;
  414.     Boolean                         validRecord;                /* open/save: true if the user confirmed a selection, false on cancel */
  415.     Boolean                         replacing;                    /* save: true if the user is overwriting an existing object for save */
  416.     Boolean                         isStationery;                /* save: true if the user wants to save an object as stationery */
  417.     Boolean                         translationNeeded;            /* save: translation is 'needed', open: translation 'has taken place' */
  418.     AEDescList                         selection;                    /* open/save: list of AppleEvent descriptors of the chosen object(s) */
  419.     ScriptCode                         keyScript;                    /* open/save: script in which the name of each item in 'selection' is to be displayed */
  420.     FileTranslationSpecArrayHandle     fileTranslation;            /* open/save: list of file translation specs of the chosen object(s), if translation is needed */
  421.     UInt32                             reserved1;
  422.     char                             reserved[231];
  423. };
  424. typedef struct NavReplyRecord            NavReplyRecord;
  425. EXTERN_API( OSErr )
  426. NavLoad                            (void);
  427.  
  428. EXTERN_API( OSErr )
  429. NavUnload                        (void);
  430.  
  431. EXTERN_API( UInt32 )
  432. NavLibraryVersion                (void);
  433.  
  434. EXTERN_API( OSErr )
  435. NavGetDefaultDialogOptions        (NavDialogOptions *        dialogOptions);
  436.  
  437.  
  438. EXTERN_API( OSErr )
  439. NavGetFile                        (AEDesc *                defaultLocation, /* can be NULL */
  440.                                  NavReplyRecord *        reply,
  441.                                  NavDialogOptions *        dialogOptions,
  442.                                  NavEventUPP             eventProc, /* can be NULL */
  443.                                  NavPreviewUPP             previewProc, /* can be NULL */
  444.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  445.                                  NavTypeListHandle         typeList, /* can be NULL */
  446.                                  void *                    callBackUD) /* can be NULL */;
  447.  
  448. EXTERN_API( OSErr )
  449. NavPutFile                        (AEDesc *                defaultLocation, /* can be NULL */
  450.                                  NavReplyRecord *        reply,
  451.                                  NavDialogOptions *        dialogOptions,
  452.                                  NavEventUPP             eventProc, /* can be NULL */
  453.                                  OSType                 fileType,
  454.                                  OSType                 fileCreator,
  455.                                  void *                    callBackUD) /* can be NULL */;
  456.  
  457. EXTERN_API( OSErr )
  458. NavAskSaveChanges                (NavDialogOptions *        dialogOptions,
  459.                                  NavAskSaveChangesAction  action,
  460.                                  NavAskSaveChangesResult * reply,
  461.                                  NavEventUPP             eventProc, /* can be NULL */
  462.                                  void *                    callBackUD) /* can be NULL */;
  463.  
  464. EXTERN_API( OSErr )
  465. NavCustomAskSaveChanges            (NavDialogOptions *        dialogOptions,
  466.                                  NavAskSaveChangesResult * reply,
  467.                                  NavEventUPP             eventProc, /* can be NULL */
  468.                                  void *                    callBackUD) /* can be NULL */;
  469.  
  470. EXTERN_API( OSErr )
  471. NavAskDiscardChanges            (NavDialogOptions *        dialogOptions,
  472.                                  NavAskDiscardChangesResult * reply,
  473.                                  NavEventUPP             eventProc, /* can be NULL */
  474.                                  void *                    callBackUD) /* can be NULL */;
  475.  
  476. EXTERN_API( OSErr )
  477. NavChooseFile                    (AEDesc *                defaultLocation, /* can be NULL */
  478.                                  NavReplyRecord *        reply,
  479.                                  NavDialogOptions *        dialogOptions,
  480.                                  NavEventUPP             eventProc, /* can be NULL */
  481.                                  NavPreviewUPP             previewProc, /* can be NULL */
  482.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  483.                                  NavTypeListHandle         typeList, /* can be NULL */
  484.                                  void *                    callBackUD) /* can be NULL */;
  485.  
  486. EXTERN_API( OSErr )
  487. NavChooseFolder                    (AEDesc *                defaultLocation, /* can be NULL */
  488.                                  NavReplyRecord *        reply,
  489.                                  NavDialogOptions *        dialogOptions,
  490.                                  NavEventUPP             eventProc, /* can be NULL */
  491.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  492.                                  void *                    callBackUD) /* can be NULL */;
  493.  
  494. EXTERN_API( OSErr )
  495. NavChooseVolume                    (AEDesc *                defaultSelection, /* can be NULL */
  496.                                  NavReplyRecord *        reply,
  497.                                  NavDialogOptions *        dialogOptions,
  498.                                  NavEventUPP             eventProc, /* can be NULL */
  499.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  500.                                  void *                    callBackUD) /* can be NULL */;
  501.  
  502. EXTERN_API( OSErr )
  503. NavChooseObject                    (AEDesc *                defaultLocation, /* can be NULL */
  504.                                  NavReplyRecord *        reply,
  505.                                  NavDialogOptions *        dialogOptions,
  506.                                  NavEventUPP             eventProc, /* can be NULL */
  507.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  508.                                  void *                    callBackUD) /* can be NULL */;
  509.  
  510. EXTERN_API( OSErr )
  511. NavNewFolder                    (AEDesc *                defaultLocation, /* can be NULL */
  512.                                  NavReplyRecord *        reply,
  513.                                  NavDialogOptions *        dialogOptions,
  514.                                  NavEventUPP             eventProc, /* can be NULL */
  515.                                  void *                    callBackUD) /* can be NULL */;
  516.  
  517. EXTERN_API( OSErr )
  518. NavTranslateFile                (NavReplyRecord *        reply,
  519.                                  NavTranslationOptions     howToTranslate);
  520.  
  521. EXTERN_API( OSErr )
  522. NavCompleteSave                    (NavReplyRecord *        reply,
  523.                                  NavTranslationOptions     howToTranslate);
  524.  
  525. EXTERN_API( OSErr )
  526. NavCustomControl                (NavContext             context,
  527.                                  NavCustomControlMessage  selector,
  528.                                  void *                    parms);
  529.  
  530. EXTERN_API( OSErr )
  531. NavCreatePreview                (AEDesc *                theObject,
  532.                                  OSType                 previewDataType,
  533.                                  const void *            previewData,
  534.                                  Size                     previewDataSize);
  535.  
  536. EXTERN_API( OSErr )
  537. NavDisposeReply                    (NavReplyRecord *        reply);
  538.  
  539. EXTERN_API( Boolean )
  540. NavServicesCanRun                (void);
  541.  
  542.  
  543. #if TARGET_RT_MAC_CFM
  544. #ifdef __cplusplus
  545.     inline pascal Boolean NavServicesAvailable() { return ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun()); }
  546. #else
  547.     #define NavServicesAvailable()     ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun())
  548. #endif
  549. #elif TARGET_RT_MAC_MACHO
  550. /* Navigation is always available on OS X */
  551. #ifdef __cplusplus
  552.     inline pascal Boolean NavServicesAvailable() { return true; }
  553. #else
  554.     #define NavServicesAvailable()     (true)
  555. #endif
  556. #else
  557. /* NavServicesAvailable() is implemented in Navigation.o for classic 68K clients*/
  558. EXTERN_API( Boolean )
  559. NavServicesAvailable            (void);
  560.  
  561. #endif  /*  */
  562.  
  563.  
  564. #if PRAGMA_STRUCT_ALIGN
  565.     #pragma options align=reset
  566. #elif PRAGMA_STRUCT_PACKPUSH
  567.     #pragma pack(pop)
  568. #elif PRAGMA_STRUCT_PACK
  569.     #pragma pack()
  570. #endif
  571.  
  572. #ifdef PRAGMA_IMPORT_OFF
  573. #pragma import off
  574. #elif PRAGMA_IMPORT
  575. #pragma import reset
  576. #endif
  577.  
  578. #ifdef __cplusplus
  579. }
  580. #endif
  581.  
  582. #endif /* __NAVIGATION__ */
  583.  
  584.